Funciones

Las funciones es una fragmento de código que recibe parámetros, ejecuta instrucciones y regresa resultados. Y nos permiten reutilizar código llamandola cuantas veces sea necesario.

def función(parámetros):
            instrucciones
            return(resultado)

Si una función es definida pero no invocada no se ejecutara en el código

Parámetros

Son elementos que recibe una función, para luego trabajar con ellos. Pueden ser:

  • Variables, que se utilizan dentro del código de la función
  • Constantes, valores predefinidos dentro de la función
  • Nulos

Se le entregan a la función al momento de llamarla. Se especifican al momento de definir la función

Valor de retorno

Es el valor que entrega la función una vez que ha terminado de ejecutarse, este se puede igualar a una variable dentro del programa

var = función(parámetro_1,parámetro_2)

Invocación

La invocación es el llamado de la función y se realiza cuando se quiere ejecutar la función definida.

Para realizar una invocación es necesiario primero definir la función o importar el módulo que la contiene y luego llamarla.

Si se intenta primero llamar a la función y luego definirla python regresara un error por definición.

Modo incorrecto de invocar una función


In [1]:
printfunc(3)

def func(num):
    return(num**num+num)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-8a9b7dbb4c06> in <module>()
----> 1 printfunc(3)
      2 
      3 def func(num):
      4     return(num**num+num)

NameError: name 'printfunc' is not defined

Modo correcto de definir una función


In [2]:
def func(num):
    return(num**num+num)
    
func(3)


Out[2]:
30

Ejemplo de uso de funciónes

Suponiendo que se tienen las siguientes listas que representan las calificaciones de 3 alumnos:


In [3]:
alex=[90,70,80,60,90]
kate=[60,70,90,70,90]
david=[90,60,80,90,80]

y se desa calcular el promedio para cada uno, una forma de hacerlo seria la siguiente, calculando individualmente el promedio para cada uno e imprimiendo los resultados por pantalla:


In [4]:
#Promedio para Alex
i=0
sumatoria = 0
while i < len(alex):
    sumatoria += alex[i]
    i += 1
promedio=sumatoria/len(alex)
print(promedio)

#Promedio para Kate
i=0
sumatoria = 0
while i < len(kate):
    sumatoria += kate[i]
    i += 1
promedio=sumatoria/len(kate)
print(promedio)

#Promedio para David
i=0
sumatoria = 0
while i < len(david):
    sumatoria += david[i]
    i += 1
promedio=sumatoria/len(david)
print(promedio)


78.0
76.0
80.0

Pero como se puede apreciar eso complica el código haciendolo repetitivo y largo, la manera mas optima para hacer esto seria creando una función que calculara el promedio, para eso se utiliza la sintaxis:

def función(parámetros):
            instrucciones
            return(resultado)

In [5]:
def promedio(alumno):
    n = len(alumno) 
    i = 0
    sumatoria = 0

    while i < n:
        sumatoria += alumno[i]
        i += 1
    resultado= sumatoria/n
    print(resultado)

Ahora con la función promedio definida el código se puede simplificar de la siguiente manera


In [6]:
promedio(alex)
promedio(kate)
promedio(david)


78.0
76.0
80.0

Parametros opcionales

En este caso se pude definir una función sin necesidad de pasar parámetros


In [7]:
def saludo():
    print("Hola!!!")

saludo()


Hola!!!

Parametros predefinidos

En estos casos se le asigna un valor al predeterminado al párametro con el cual se ejecutara la función en caso de que no se le asigne algun otro valor.


In [8]:
# Definicion de la función con el parámetro hora predeterminado como True
def saludo(hora=True):
    if hora==True:
        print("Hola, buen día!")
    else:
        print("Hola, buenas noches")

In [9]:
# Se ejecuta la función sin asignación de párametro
saludo()


Hola, buen día!

In [10]:
# Se ejecuta la funcion con asignación de parámetro
t=False
saludo(t)


Hola, buenas noches